package com.hhxy.utils;

import com.hhxy.constants.SystemConstants;
import com.hhxy.model.dto.LoginUser;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;

/**
 * @author ghp
 * @date 2023/4/18
 * @title
 * @description 用于获取存储在SecurityContextHolder中的用户信息
 */
public class SecurityUtils {

    /**
     * 获取用户
     **/
    public static LoginUser getLoginUser() {
        return (LoginUser) getAuthentication().getPrincipal();
    }

    /**
     * 获取Authentication
     */
    public static Authentication getAuthentication() {
        return SecurityContextHolder.getContext().getAuthentication();
    }

    /**
     * 判断当前用户是否是超级管理员（系统默认将userId为1的用户设置为超级管理员）
     * @return
     */
    public static Boolean isAdmin() {
        Long id = getLoginUser().getUser().getId();
        return id != null && id.equals(SystemConstants.SUPER_ADMIN);
    }

    /**
     * 获取用户id
     * @return
     */
    public static Long getUserId() {
        return getLoginUser().getUser().getId();
    }
}